package net.suncaper.hotel.service;

import net.suncaper.hotel.common.utils.PageInfo;
import net.suncaper.hotel.model.dto.ReservationDTO;
import net.suncaper.hotel.model.vo.ReservationVO;

import java.util.Date;
import java.util.List;

/**
 * 预订服务接口
 */
public interface IReservationService {
    
    /**
     * 分页查询预订列表
     */
    PageInfo<ReservationVO> getReservationList(int pageNum, int pageSize);
    
    /**
     * 根据状态查询预订
     */
    List<ReservationVO> getReservationsByStatus(String status);
    
    /**
     * 查询今日入住的预订
     */
    List<ReservationVO> getTodayCheckIns();
    
    /**
     * 查询今日退房的预订
     */
    List<ReservationVO> getTodayCheckOuts();
    
    /**
     * 根据ID查询预订详情
     */
    ReservationVO getReservationById(Integer id);
    
    /**
     * 创建预订
     */
    String createReservation(ReservationDTO dto);
    
    /**
     * 更新预订
     */
    boolean updateReservation(ReservationDTO dto);
    
    /**
     * 确认预订
     */
    boolean confirmReservation(Integer id);
    
    /**
     * 取消预订
     */
    boolean cancelReservation(Integer id);
    
    /**
     * 检查房间可用性
     */
    boolean checkRoomAvailability(Integer roomId, Date checkInDate, Date checkOutDate, Integer excludeReservationId);
}